package com.mzy.olddate.demo.init;


/**
 * Created with IntelliJ IDEA.
 *
 * @Author mzy
 * @Date 2021/7/25 17:40
 * @Version 1.0
 */
    class Cup {
        Cup(int marker) {
            System.out.println("Cup(" + marker + ")");
        }
        void f(int marker) {
            System.out.println("f(" + marker + ")");
        }
    }

    class Cups {
        static Cup cup1;
        static Cup cup2;
        static int a;
        static {
            System.out.println(a);
            System.out.println(cup1);
            cup1 = new Cup(1);
            cup2 = new Cup(2);

        }
        Cups() {
            System.out.println("Cups()");
        }
    }

    public class InitOrder {
        public static void main(String[] args) {
            System.out.println("Inside main()");
            System.out.println(Cups.a);
            System.out.println(Cups.cup1);
            Cups.cup1.f(99);  // (1)
        }
//         static Cups cups1 = new Cups();  // (2)  --> 执行顺序，调用一个方法的时候。如果有静态代码块，静态代码块会先被执行。 其次，构造方法也可以被任务是静态代码块
        // static Cups cups2 = new Cups();  // (2)  --> 一个对象被new，引用之后会先执行它的构造方法，如果没有有参构造就执行无参构造
    } /* Output:
Inside main()
Cup(1)
Cup(2)
f(99)
*///:~
